package com.zw.a.basic.a14.demo03_udp_exercise;

//案例: UDP协议案例, 发送端接收用户键盘录入的数据, 然后发送给接收端, 接收端接收到数据后, 打印到控制台上.

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

//UDP接收数据：因为接收端不知道发送端什么时候停止发送，故采用死循环接收
public class ReceiveDemo {
    public static void main(String[] args) throws Exception {
        //1. 创建接收端Socket对象, 指定端口号.
        DatagramSocket ds = new DatagramSocket(12345);
        //2. 通过死循环, 不断接收数据.
        while(true) {
            //3. 定义字节数组, 用来存储数据.
            byte[] bys = new byte[1024];
            //4. 定义DatagramPacket对象,用来接收数据.
            DatagramPacket dp = new DatagramPacket(bys, bys.length);
            //5. 接收数据, 并把数据存入到 数据报包对象中.
            ds.receive(dp);
            //6. 解析数据报包, 并在控制台输出结果.
            String s = new String(dp.getData(), 0, dp.getLength());
            System.out.println("数据是: " + s);
        }

        //7. 关闭客户端.
        //ds.close();
    }
}
